﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aeroporto.modelo;
using Npgsql;
using System.Data;

namespace Aeroporto.bd
{
    class VooDAO : GenericDAO
    {
        public DataTable pesquisar_siglas(string nome)
        {
            try
            {   
                string sql = "select * from trecho where sigla_comp = '"+ nome + "'";
                Arquivo.escrever(sql);
                NpgsqlCommand command = new NpgsqlCommand(sql, Conexao.getConexao());
                NpgsqlDataAdapter da = new NpgsqlDataAdapter();
                da.SelectCommand = command;
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
            catch (Exception erro)
            {
                throw erro;
            }
        }

        /**
         * Realiza busca no banco de dados por tabela, coluna e nome
         **/
        public DataTable pesquisarTrecho(string id_trecho)
        {
            try
            {
                string sql = "select * from trecho where id_trecho = " + id_trecho;
                Arquivo.escrever(sql);
                NpgsqlCommand command = new NpgsqlCommand(sql, Conexao.getConexao());
                NpgsqlDataAdapter da = new NpgsqlDataAdapter();
                da.SelectCommand = command;
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
            catch (Exception erro)
            {
                throw erro;
            }
        }
        /*
        public bool existe_registro_voo(string tabela, string coluna1, string coluna2, string valor1, string valor2)
        {
            string sql = "select * from " + tabela + " where " + coluna1 + " = '" + valor1 + "' and "+coluna2+" = '"+valor2+"'";
            NpgsqlDataReader datareader = Conexao.consulta(sql);
            bool hasrows = datareader.HasRows;
            datareader.Close();
            return hasrows;
        }*/

        internal MyMessageBox excluir_voo(System.Collections.ArrayList voos, string sigla_comp)
        {
            MyMessageBox mb = new MyMessageBox("", "");
            for (int i = 0; i < voos.Count; i++)
            {
                mb = excluir("delete from voo where sigla_comp = '" + sigla_comp + "' and num_voo = '" + voos[i]+"'" );                
                if (mb.String2 == "Erro não foi removido.:")
                {
                    return mb;
                }
            }
            return mb;
        }
        /*
        internal bool update_dados(VooModel voo)
        {
            try
            {
                string sql = "update voo set sigla_comp = '" + voo.siglaComp + "', num_voo = " + voo.numVoo;
                Conexao.consulta(sql);
                return true;
            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return false;
        }*/

        public DataTable pesquisarVoo(string num_voo, string companhia)
        {
            try
            {
                string sql = "select * from voo where sigla_comp = '"+companhia+"' and upper(num_voo) = '" + num_voo+"'";                
                Arquivo.escrever(sql);
                NpgsqlCommand command = new NpgsqlCommand(sql, Conexao.getConexao());
                NpgsqlDataAdapter da = new NpgsqlDataAdapter();
                da.SelectCommand = command;
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
            catch (Exception erro)
            {
                throw erro;
            }
        }

        public DataTable pesquisar_num_voo(string num_voo, string companhia)
        {
            try
            {
                string sql = "select * from trecho where sigla_comp = '" + companhia + "' and upper(num_voo) = '" + num_voo + "'";
                Arquivo.escrever(sql);
                NpgsqlCommand command = new NpgsqlCommand(sql, Conexao.getConexao());
                NpgsqlDataAdapter da = new NpgsqlDataAdapter();
                da.SelectCommand = command;
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
            catch (Exception erro)
            {
                throw erro;
            }            
        }

        public DataTable pesquisar_instancia(string companhia, string num_voo, string id_trecho)
        {
            try
            {
                string sql = "select i.data_viagem from trecho t, instancia i where i.id_trecho = "+id_trecho+ " and i.id_trecho = t.id_trecho and t.sigla_comp = '" + companhia + "' and upper(t.num_voo) = '" + num_voo + "'";
                Arquivo.escrever(sql);
                NpgsqlCommand command = new NpgsqlCommand(sql, Conexao.getConexao());
                NpgsqlDataAdapter da = new NpgsqlDataAdapter();
                da.SelectCommand = command;
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
            catch (Exception erro)
            {
                throw erro;
            }            
        }



    }
}
